
import axios from 'axios'
import qs from 'qs'

const requests = axios.create({
    baseURL: '/api',
    timeout: 5000
})


export function get(url,params){
    return requests({
        method:'get',
        url:`${url}`,
        params:params,
    })
}
export function post(url,formdata){
    return requests({
        method:'post',
        url:`${url}`,
        data:formdata,
        transformRequest: [function(data){
            return qs.stringify(data,{allowDots:true})
        }],
        headers:{
            'Content-Type':'application/x-www-form-urlencoded',
            // 'token':token
        }
    })
}

export function postJson(url,params){
    // let token = 
    return requests({
        method:'post',
        url:`${url}`,
        data:params,
        headers:{
            'Content-Type':'application/json',
        }
    })
}

requests.interceptors.request.use(req => {
    let accessToken = window.sessionStorage.getItem('accessToken')
    console.log(accessToken)
    if (accessToken && accessToken != '') {
        req.headers.token = accessToken
    }
    return req;
}, err => {
    return Promise.reject(err)
})

requests.interceptors.response.use((res) => {
    if(res.data.statusCode != 200){
        if(res.data.statusCode == null && res.data.message == null){
            window.location.href = "/login"
        }
        console.log(res.data)
        const err = {
            status:res.data.statusCode,
            message:res.data.message,
        }
        return Promise.reject(err);
    }
    return Promise.resolve(res.data)
}, (err) => {
    console.log('is error')
    console.log(err)
    if (err) {
        switch (err.request.status) {
            case 400:
                err.message = `错误请求`;
                break;
            case 401:
                err.message = `未授权，请重新登录`;
                break;
            case 403:
                err.message = `拒绝访问`;
                break;
            case 404:
                err.message = `请求错误,未找到该资源`;
                break;
            case 405:
                err.message = `请求方法未允许`;
                break;
            case 408:
                err.message = `请求超时`;
                break;
            case 500:
                err.message = `服务器端出错`;
                break;
            case 501:
                err.message = `网络未实现`;
                break;
            case 502:
                err.message = `网络错误`;
                break;
            case 503:
                err.message = `服务不可用`;
                break;
            case 504:
                err.message = `网络超时`;
                break;
            case 505:
                err.message = `http版本不支持该请求`;
                break;
            default:
                err.message = `未知错误${err.res.status}`;
        }
        err.status = err.request.status
    } else {
        err.message = "连接到服务器失败";
    }
    return Promise.reject(err);
}

)

export default requests